import { baseUrl } from '@/utils/index.ts'

/**
 * 上传文件（uni-app跨端兼容方式）
 * @param filePath 要上传的文件路径
 * @param onProgress 上传进度回调函数
 * @returns Promise
 */
export const uploadFile = (filePath: string, onProgress?: (progress: number) => void): Promise<any> => {
  return new Promise((resolve, reject) => {
    // 获取 token
    const token = uni.getStorageSync('token')
    
    // 使用 uni.uploadFile 进行跨端文件上传
    const uploadTask = uni.uploadFile({
      url: baseUrl + '/upload',
      filePath,
      name: 'file', // 后端接收文件的字段名
      header: {
        'Authorization': token ? `Bearer ${token}` : ''
      },
      success: (res) => {
        try {
          const response = JSON.parse(res.data)
          if (response.code === 200) {
            resolve(response)
          } else {
            reject(new Error(response.message || '上传失败'))
          }
        } catch (e) {
          reject(new Error('解析响应失败'))
        }
      },
      fail: (err) => {
        reject(new Error(err.errMsg || '上传失败'))
      }
    })
    
    // 监听上传进度
    if (onProgress) {
      uploadTask.onProgressUpdate((res) => {
        onProgress(res.progress)
      })
    }
  })
}

export default {
  uploadFile
}